מבני נתונים. (ב) ואז הוא הופך למערך המייצג את האינדקס האחרי אחרון של כל מספר: c

Σχετικά έγγραφα
מבני נתונים. אחרי שלב זה המשיכו והריצו את מיון מהיר על המערך. תארו את כל שלבי הרקורסיה, אך עתה אין צורך להיכנס לתיאור הריצה של.

יסודות לוגיקה ותורת הקבוצות למערכות מידע (סמסטר ב 2012)

חורף תש''ע פתרון בחינה סופית מועד א'

פתרון תרגיל 8. מרחבים וקטורים פרישה, תלות \ אי-תלות לינארית, בסיס ומימד ... ( ) ( ) ( ) = L. uuruuruur. { v,v,v ( ) ( ) ( ) ( )

פתרון תרגיל מרחבים וקטורים. x = s t ולכן. ur uur נסמן, ur uur לכן U הוא. ur uur. ur uur

חידה לחימום. כתבו תכappleית מחשב, המקבלת כקלט את M ו- N, מחליטה האם ברצוappleה להיות השחקן הפותח או השחקן השappleי, ותשחק כך שהיא תappleצח תמיד.

(2) מיונים השאלות. .0 left right n 1. void Sort(int A[], int left, int right) { int p;

תרגול 1 חזרה טורי פורייה והתמרות אינטגרליות חורף תשע"ב זהויות טריגונומטריות

תרגול מס' 6 פתרון מערכת משוואות ליניארית

השאלות..h(k) = k mod m

תרגול פעולות מומצאות 3

= 2. + sin(240 ) = = 3 ( tan(α) = 5 2 = sin(α) = sin(α) = 5. os(α) = + c ot(α) = π)) sin( 60 ) sin( 60 ) sin(

gcd 24,15 = 3 3 =

ניהול תמיכה מערכות שלבים: DFfactor=a-1 DFt=an-1 DFeror=a(n-1) (סכום _ הנתונים ( (מספר _ חזרות ( (מספר _ רמות ( (סכום _ ריבועי _ כל _ הנתונים (

שדות תזכורת: פולינום ממעלה 2 או 3 מעל שדה הוא פריק אם ורק אם יש לו שורש בשדה. שקיימים 5 מספרים שלמים שונים , ראשוני. שעבורם

Charles Augustin COULOMB ( ) קולון חוק = K F E המרחק סטט-קולון.

תרגיל 13 משפטי רול ולגראנז הערות

תרגיל 7 פונקציות טריגונומטריות הערות

TECHNION Israel Institute of Technology, Faculty of Mechanical Engineering מבוא לבקרה (034040) גליון תרגילי בית מס 5 ציור 1: דיאגרמת הבלוקים

הגדרה: קבוצת פעילויות חוקית היא קבוצה בה כל שתי פעילויות

שאלה 1 V AB פתרון AB 30 R3 20 R

פתרון תרגיל 5 מבוא ללוגיקה ותורת הקבוצות, סתיו תשע"ד

משוואות רקורסיביות רקורסיה זו משוואה או אי שוויון אשר מתארת פונקציה בעזרת ערכי הפונקציה על ארגומנטים קטנים. למשל: יונתן יניב, דוד וייץ

מבני נתונים ואלגוריתמים תרגול #11

תורת הגרפים - סימונים

קיום ויחידות פתרונות למשוואות דיפרנציאליות

לוגיקה ותורת הקבוצות פתרון תרגיל בית 8 חורף תשע"ו ( ) ... חלק ראשון: שאלות שאינן להגשה נפריד למקרים:

ל הזכויות שמורות לדפנה וסטרייך

c ארזים 26 בינואר משפט ברנסייד פתירה. Cl (z) = G / Cent (z) = q b r 2 הצגות ממשיות V = V 0 R C אזי מקבלים הצגה מרוכבת G GL R (V 0 ) GL C (V )

סדרות - תרגילים הכנה לבגרות 5 יח"ל

אלגוריתמים ללכסון מטריצות ואופרטורים

מתכנס בהחלט אם n n=1 a. k=m. k=m a k n n שקטן מאפסילון. אם קח, ניקח את ה- N שאנחנו. sin 2n מתכנס משום ש- n=1 n. ( 1) n 1

{ : Halts on every input}

רשימת בעיות בסיבוכיות

תוכן הפרק: ,best case, average case דוגמאות 1. זמן - נמדד באמצעות מס' פעולות סיבוכיות, דוגמאות, שיפור בפקטור קבוע האלגוריתם. וגודלם. איטרטיביים. לקלט.

פתרון תרגיל 4 יסודות מבני נתונים סמסטר א' תשע"ה שאלה 1:

לדוגמה: במפורט: x C. ,a,7 ו- 13. כלומר בקיצור

אלגברה מודרנית פתרון שיעורי בית 6

כלליים זמן: S מחסנית, top(s) ראש המחסנית. (Depth First Search) For each unmarked DFS(v) / BFS(v) רקורסיבי. אלגוריתם :BFS

מיון. 1 מיון ערימה (Heapsort) חלק I 1.1 הגדרת ערימה 0.1 הגדרה של המושג מיון מסקנה: הערך הכי גבוה בערימה נמצא בשורש העץ!

תרגול 8: מטלאב לולאות

brookal/logic.html לוגיקה מתמטית תרגיל אלון ברוק

( )( ) ( ) f : B C היא פונקציה חח"ע ועל מכיוון שהיא מוגדרת ע"י. מכיוון ש f היא פונקציהאז )) 2 ( ( = ) ( ( )) היא פונקציה חח"ע אז ועל פי הגדרת

צעד ראשון להצטיינות מבוא: קבוצות מיוחדות של מספרים ממשיים

מתמטיקה בדידה תרגול מס' 12

מיונים א': מיון (Sorting) HeapSort. QuickSort תור עדיפויות / ערימה

מבני נתונים מבחן מועד ב' סמסטר חורף תשס"ו

מבני נתונים ויעילות אלגוריתמים

הגדרה: מצבים k -בני-הפרדה

מודלים חישוביים תרגולמס 7

פתרון 4. a = Δv Δt = = 2.5 m s 10 0 = 25. y = y v = 15.33m s = 40 2 = 20 m s. v = = 30m x = t. x = x 0.

קבוצה היא שם כללי לתיאור אוסף כלשהו של איברים.

תשובות מלאות לבחינת הבגרות במתמטיקה מועד ג' תשע"ד, מיום 0/8/0610 שאלונים: 315, מוצע על ידי בית הספר לבגרות ולפסיכומטרי של אבירם פלדמן

[ ] Observability, Controllability תרגול 6. ( t) t t קונטרולבילית H למימדים!!) והאובז' דוגמא: x. נשתמש בעובדה ש ) SS rank( S) = rank( עבור מטריצה m

Lecture 10 of Geiger & Itai s slide brochure Median/sort. pivot. Geiger & Itai, 2001

מתמטיקה בדידה תרגול מס' 2

דוגמה: יהי T עץ בינארי כפי שמתואר בציור הבא:

ניתוח סיבוכיות - פונקציות רקורסיביות פיתוח טלסקופי

פתרון תרגיל בית 6 מבוא לתורת החבורות סמסטר א תשע ז

אלגברה לינארית (1) - פתרון תרגיל 11

סיכום בנושא של דיפרנציאביליות ונגזרות כיווניות

"קשר-חם" : לקידום שיפור וריענון החינוך המתמטי

יווקיינ לש תוביציה ןוירטירק

סיכום- בעיות מינימוםמקסימום - שאלון 806

דף פתרונות 7 נושא: תחשיב הפסוקים: צורה דיסיונקטיבית נורמלית, מערכת קשרים שלמה, עקביות

s ק"מ קמ"ש מ - A A מ - מ - 5 p vp v=

co ארזים 3 במרץ 2016

פתרונות , כך שאי השוויון המבוקש הוא ברור מאליו ולכן גם קודמו תקף ובכך מוכחת המונוטוניות העולה של הסדרה הנתונה.

אלגוריתמים קומבינטוריים סיכומים של תרגילי כיתה מסמסטרים קודמים בנושא מיון ובעיית הבחירה

פתרון תרגיל דוגמא מרחב המדגם הוא כל הקומבינציות של 20 חודשי הולדת. לכל ילד 12 אפשרויות,לכן. לכן -

1 סכום ישר של תת מרחבים

תרגילים באמצעות Q. תרגיל 2 CD,BF,AE הם גבהים במשולש .ABC הקטעים. ABC D נמצאת על המעגל בין A ל- C כך ש-. AD BF ABC FME

אוסף שאלות מס. 3 פתרונות

תאריך הבחינה: שם המרצה: רפי כהן שם המתרגל: יסודות מבני נתונים שם הקורס:

אלגברה ליניארית 1 א' פתרון 8

מודלים חישוביים פתרון תרגיל 5

Logic and Set Theory for Comp. Sci.

"קשר-חם" : לקידום שיפור וריענון החינוך המתמטי

הרצאה. α α פלוני, וכדומה. הזוויות α ל- β שווה ל-

Hash Tables (המשך) ערבול (Hashing)

אלגברה ליניארית (1) - תרגיל 6

מבחן מועד ב' בהצלחה! אנא קיראו היטב את ההוראות שלהלן: ודאו כי כל עמודי הבחינה נמצאים בידכם.

מתמטיקה בדידה תרגול מס' 13

לוגיקה ותורת הקבוצות פתרון תרגיל בית 4 אביב תשע"ו (2016)

מבני נתונים הגבלת אחריות פרק - 1 אלגוריתמי מיון ואנליזה אסימפטוטית. מיון בועות Sort Bubble מאת : סשה גולדשטיין,

אלגוריתמים / תרגיל #1

-107- גיאומטריה זוויות מבוא מטרתנו בפרק זה היא לחזור על המושגים שנלמדו ולהעמיק את הלימוד בנושא זה.

חידה לחימום. כתבו תכנית שהקלט שלה הוא מספר שלם n,

מינימיזציה של DFA מינימיזציה של הקנוני שאותה ראינו בסעיף הקודם. בנוסף, נוכיח את יחידות האוטומט המינימלי בכך שנראה שכל אוטומט על ידי שינוי שמות

סימני התחלקות ב 3, ב 6 וב 9

áùçîä éòãîì äîâîä ÌÈÏÈ ÂÁ

בחינה בסיבוכיות עמר ברקמן, ישי חביב מדבקית ברקוד

תכנון אלגוריתמים 2016 עבודה 1 שאלה 1 פתרון נתונות שתי בעיות. יש למצוא: אורך מסלול קצר ביותר המתחיל באחד מן הקודקודים s 1,..., s k ומסתיים ב t.

אלגברה ליניארית 1 א' פתרון 2

: מציאת המטען על הקבל והזרם במעגל כפונקציה של הזמן ( )

תרגול משפט הדיברגנץ. D תחום חסום וסגור בעל שפה חלקה למדי D, ותהי F פו' וקטורית :F, R n R n אזי: נוסחת גרין I: הוכחה: F = u v כאשר u פו' סקלרית:

I. גבולות. x 0. מתקיים L < ε. lim אם ורק אם. ( x) = 1. lim = 1. lim. x x ( ) הפונקציה נגזרות Δ 0. x Δx

תשובות מלאות לבחינת הבגרות במתמטיקה מועד חורף תשע"א, מיום 31/1/2011 שאלון: מוצע על ידי בית הספר לבגרות ולפסיכומטרי של אבירם פלדמן.

( n) ( ) ( ) שאלה 1: שאלה 2: שאלה 3: (n 5) = Θ. ב. אם f 1, f 2, g 1, g 2. .g 1 *g 2 = Ω(f 1 *f 2 ) , g. ג. ) n.n! = θ(n*2. n) f ( אז ד. אם ה. אם ו.

TECHNION - ISRAEL INSTITUTE OF TECHNOLOGY DEPARTMENT OF COMPUTER SCIENCE סמסטר אביב תשס"ו מס' סטודנט:

Transcript:

מבני נתונים תרגיל 3 פתרונות מיונים לינאריים 1. הריצו את מיון מנייה על המערך הבא: 5, 4, 1, 5, 1, 1, 2, 2, 5, 4, 4 הניחו שהחסם העליון לערכי המספרים במערך הוא = 6 k, והראו את שלבי הריצה של האלגוריתם. אין צורך לרדת לפרטי פרטים, בעיקר ציינו איך נראה מערך המונים אחרי כל שלב ותארו כמה שלבים של כתיבת האברים במערך החדש, יחד עם מה שקורה למערך המונים באותו זמן. (א) לאחר בניית מערך המונים: c 0 3 2 0 3 3 (ב) ואז הוא הופך למערך המייצג את האינדקס האחרי אחרון של כל מספר: c 0 3 5 5 8 11 (ג) בסוף ממינים את המערך עצמו, ובמהלך זה מערך המונים קטן כך שלבסוף הוא מצביע על האינדקס הראשון של כל אבר: נראה פה איך המערך b מתמלא תוך כדי: c 0 3 5 5 8 11 b 6 7 8 9 10 1

c 0 3 5 5 7 11 6 7 8 9 10 b 4 c 0 3 5 5 6 11 6 7 8 9 10 b 4 4 c 0 3 5 5 6 10 6 7 8 9 10 b 4 4 5 c 0 3 4 5 6 10 6 7 8 9 10 b 2 4 4 5 c 0 3 3 5 6 10 c 0 0 3 5 5 8 וכך הלאה עד ל: 6 7 8 9 10 b 1 1 1 2 2 4 4 4 5 5 5 2

2. במיון מנייה, אילו היינו משנים את הקוד של הלולאה השנייה שמכניסה את המספרים חזרה למערך, ובמקום שכתוב: for (int i=a.length-1; i>=0; i--) { } int value = a[i]; int index = c[value] - 1; b[index] = value; c[value]--; c[value]--; היינו מורידים את השורה: האם האלגוריתם היה ממשיך לפעול נכון על קלט כלשהו? על אף קלט? על חלק מהקלטים? הסבירו את תשובותיכם. האלגוריתם היה ממשיך לפעול נכון על כל קלט בו כל הערכים הם שונים. אבל בקלט בו יש שני ערכים זהים, האלגוריתם יכתוב אותם אחד על השני כשהוא כותב את הערכים במערך ולכן הם יופיעו רק פעם אחת. במקומות האחרים בהם היו צריכים להופיע יופיע 0. 3. במיון מנייה: (א) מה יקרה אם בשלב האחרון בו אנו מכניסים את הערכים מהמערך המקורי למערך החדש b, נרוץ על המערך המקורי מההתחלה לסוף ולא כפי שזה ממומש כרגע, מהסוף להתחלה? אנו נאבד את תכונת היציבות, כי האברים עם ערכים זהים יכנסו בסדר הפוך במערך החדש. (ב) כרגע, אחרי הלולאה השנייה במיון מנייה, מערך המונים מחזיק במקום ה i את המקום האחרון (פלוס 1) שבו יופיעו האברים עם ערך i. איך נשנה את הקוד כך שמערך המונים יחזיק לא את המקום האחרון אלא את המקום הראשון שבו יופיעו ה i? נוסיף את 3 השורות הבאות לאחר הלולאה השנייה בשיטה: for (int i=k-1; i>0; i--) c[i] = c[i-1]; c[0] = 0; 3

(ג) השתמשו בסעיף הקודם וכתבו גרסא חדשה למיון מנייה שתמלא את הערכים חזרה במערך משמאל לימין ולא מימין לשמאל. חשוב שהמיון שאתם כותבים יהיה מיון יציב. void countingsort(int[] a, int k) { int[] c = new int[k]; for (int i=0; i<a.length; i++) c[a[i]]++; for (int i=1; i<k; i++) c[i] += c[i-1]; for (int i=k-1; i>0; i--) c[i] = c[i-1]; c[0] = 0; int[] b = new int[a.length]; for (int i=0; i<a.length; i++) { int value = a[i]; b[c[value]] = value; c[value]++; } // now copy b back to a. } 4. הדגימו את מיון דלי על שני המערכים הבאים: 0.79, 0.13, 0.16, 0.64, 0.39, 0.2, 0.89, 0.53, 0.71, 0.42 (א).0.1.1.2.2.3.3.4.4.5.5.6.6.7.7.8.8.9.9 1 0.13, 0.16 0.2 0.39 0.42 0.53 0.64 0.79, 0.71 0.89 ואז כל תא ממוין בפני עצמו:.0.1.1.2.2.3.3.4.4.5.5.6.6.7.7.8.8.9.9 1 0.13, 0.16 0.2 0.39 0.42 0.53 0.64 0.71, 0.79 0.89 ומפה שולפים את האברים אחד אחד ומקבלים אותם ממוינים. 4

0.63, 0.67, 0.68, 0.66, 0.6, 0.64, 0.65, 0.69, 0.62, 0.61 (ב) כיון שכולם המספרים נופלים בתא אחד, אז ממינים אותם במיון שבחרנו בתור המיון המשני של מיון דלי מיון הכנסה, ואז הפסדנו את כל מה שמיון דלי נותן. מהו זמן הריצה כפונקציה של גודל הקלט בשני הסעיפים? בראשון O(n) ובשני ) 2.O(n 5. כתבו את הקוד שמחשב את מספר הדלי של מספר כאשר הטווח הוא לאו דוקא (1,0] אלא: (r,l]. למשל אם הטווח הוא (3,1] ומספר הדליים = 5 n אז המספר = 2.01 value צריך להכנס לדלי 2 (הדלי השלישי). הדרכה: קחו קודם את הערך והיפכו אותו לערך המקביל אילו הטווח כן היה.[0, 1),value = value l ואז מספר r l דבר ראשון ננרמל למספר בין 0 ו 1 : הדלי הוא כמו בקוד המקורי: (n.round(value 6. שרטט את מהלכו של מיון בסיס (לא את כל הצעדים, אלא רק את המצב לאחר כל שימוש במיון מניה) על רשימת המלים הבאה: cow, dog, sea, rug, row, mob, box, tab, bar, ear, tar, dig, big, tea, now, fox מיון אות תחתונה: sea, tea, mob, tab, dog, rug, dig, big, bar, ear, tar, cow, row, now, box, fox אות שנייה: tab, bar, ear, tar, sea, tea, dig, big, mob, dog, cow, row, now, box, fox, rug ואות ראשונה: bar, big, box, cow, dig, dog, ear, fox, mob, now, row, rug, sea, tab, tar, tea בטא את זמן הריצה של האלגוריתם כפונקציה של: מספר המילים n, מספר האותיות בשפה k, ומספר האותיות במילה d. Θ(d(n + k)) 7. בונוס: נתון מערך עם n מספרים שלמים בטווח [1,... n 2,0]. מצאו אלגוריתם למיון מערך כזה הרץ בזמן.O(n) רמז: חישבו על אלגוריתמי המיון בזמן לינארי שלמדנו. כל מספר בטווח ניתו לחשוב עליו כמספר דו סיפרתי כאשר כל סיפרה היא בטווח 1 n,...,0. נריץ לכן מיון בסיס, רק שהבסיס שלנו הוא n. לכל 5

מספר שתי ספרות, ולכן לפי התוצאה של השאלה הקודמת נקבל שזמן הריצה הוא O(n).O(2(n + n)) = איך מגלים ממספר x בטווח מה הספרה הקטנה ומה הגדולה? כרגיל: הספרה הקטנה היא,x mod n והגדולה היא n. x בעיית הבחירה 1. נדון באלגוריתם הלינארי (בכל מקרה) לפתרון בעית הבחירה. (א) הציגו דוגמה פשוטה ככל האפשר למערך בן 25 תאים בו חציון החציונים ימוקם במיקום המיטבי. הסבירו היכן ימוקם חציון החציונים, ואילו ערכים ישכנו מכל אחד משני צדדיו. 1, 2, 3, 4, 5, 6... כלומר ניקח מערך ממוין. המיון של החמישיות לא יגרום לשום תזוזה. ואז חציון החציונים יהיה מתוך 3, 8, 13, 18, 23 והוא 13. הוא כמובן ממוקם בדיוק באמצע. (ב) כמו א', רק שחציון החציונים ימוקם הפעם במקום הגרוע ביותר. נסדר לפי חמישיות: 1, 2, 50, 100, 101 3, 4, 51, 102, 103 5, 6, 52, 104, 105 106, 107, 108, 109, 110 111, 112, 113, 114, 115 כל חמישיה כבר ממוינת וחציוני החציונים הם 50, 51, 52, 108, 113 מבינהם החציון הוא 52 וקטנים ממנו הם רק:.1, 2, 3, 4, 5, 6, 51, 52 כדי להבין איך מגיעים למערך הזה, חשבו על המקרה שמותרות חזרות במערך: 1, 1, 1, 3, 3 1, 1, 1, 3, 3 1, 1, 2, 3, 3 3, 3, 3, 3, 3 3, 3, 3, 3, 3 פה מקבלים בדיוק את המקרה הגרוע. היחידים שקטנים מהחציון אלה החציונים שקטנים ממנו ואלו שמתחתיהם. בקורס למדנו רק את הגרסא בה כל המספרים שונים, אבל למעשה אין הבדל אמיתי בין גרסא זו והגרסא המלאה. 2. בשאלה זו השתמשו בשיטה,select והניחו שהיא מחזירה את ערך החזרה שלה בלי שהיא משנה את המערך כלל. 6

(א) תארו אלגוריתם לינארי המדפיס את k האברים הקטנים ביותר במערך לא ממוין. int kth = select(a, 0, a.length, k); for (int i = 0; i < a.length; i++) if (a[i] < kth) print a[i]; (ב) תארו אלגוריתם לינארי המדפיס את k האברים מהמערך שהכי קרובים למספר נתון. מה זה הכי קרובים? המרחק בין שני מספרים הוא ההפרש בינהם בערך מוחלט. כלומר אנו מחפשים את המספרים שההפרש בינהם ובין הערך שאנו מקבלים הוא הכי קטן. לשם פשטות, הניחו שקבוצת המרחקים בין המספרים השונים אינה מכילה חזרות. רמז : צרו מערך חדש מהמערך הנתון והשתמשו בו כדי לדעת איזה ערכים מהמערך המקורי הם רלוונטים. int[] b = new int[a.length]; for (int i = 0; i < a.length; i++) b[i] = Math.abs(a[i] - value); int kth = select(b, 0, b.length, k); for (int i = 0; i < b.length; i++) if (b[i] < kth) print a[i]; (ג) כיתבו אלגוריתם לינארי המוצא את k האברים שהכי קרובים לחציון המערך. נריץ קודם את האלגוריתם של מציאת חציון ואז נריץ את האלגוריתם מהסעיף הקודם עם החציון הזה. 3. באלגוריתם לבעיית הבחירה, אילו היינו עובדים לא עם חמישיות אלא עם שלשות בשלב של מציאת ה pivot מה היה יוצא הביטוי הרקורסיבי המבטא את זמן הריצה (n) T? אין צורך לפתור את המשוואה הרקורסיבית, אלא רק לכתוב אותה. הקריאה הרקורסיבית הראשונה תהיה על כל האמצעים של השלישיות, ויש 1 3 n כאלה. אז צריך לשאול כמה טוב יהיה ה pivot שמצאנו. הוא יותר גדול מ 1 6n החציונים שקטנים ממנו, וכל אחד כזה מביא כנדוניה עוד אחד. סך הכל. 2 6 n = 1 3n זאת 7

אומרת שה pivot נמצא איפשהו בטווח, 1 3...n 2 3n ולכן במקרה הגרוע הקריאה הרקורסיבית תהיה על. 2 3n סך הכל: T (n) = n + T ( 1 3 n) + T (2 3 n) ואגב, רק לשם ההשכלה הכללית, פתרון נוסחא זו יתן (n T. (n) = Θ(n log 8